package beans;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.faces.event.ActionEvent;  
import javax.faces.context.FacesContext;  
import javax.faces.application.FacesMessage;

import entidad.Pais;
import facade.PaisFacadeRemote;




@ManagedBean
@SessionScoped

public class PaisBean {
	@EJB
	private PaisFacadeRemote PaisRemote;		
	private String nombrePais;
	private String nacionalidad;
	private String idPais;
	

	public String getNombrePais() {
		return nombrePais;
	}

	public void setNombrePais(String nombrePais) {
		this.nombrePais = nombrePais;
	}

	public String getNacionalidad() {
		return nacionalidad;
	}

	public void setNacionalidad(String nacionalidad) {
		this.nacionalidad = nacionalidad;
	}
	
	public String getIdPais() {
		return idPais;
	}

	public void setIdPais(String idPais) {
		this.idPais = idPais;
	}

	//----------------------------------------------------------
	
	public List<Pais> getListarTabla(){
		return PaisRemote.Listar();
	}	
	
	public ArrayList<SelectItem> getListarLista() {
		ArrayList<SelectItem> lista = new ArrayList<SelectItem>();
		for(Pais objPais:PaisRemote.Listar()){
			lista.add(new SelectItem(objPais.getNombrePais(),objPais.getNombrePais()));
		}
		return lista;
	}
	public String Save(ActionEvent e){
		Pais objPais = new Pais();
		objPais = PaisRemote.Find(nombrePais);
		if(objPais==null){
			objPais = new Pais();
			objPais.setNombrePais(nombrePais);
			objPais.setNacionalidad(nacionalidad);
			PaisRemote.Save(objPais);
			AddInfo(e,"Save"); 
		}else{
			AddError(e,"No Save"); 
		}
		Init();
		return "savePais.xhtml";
	}
	
	public String Update(ActionEvent e){
		Pais objPais = new Pais();
		objPais = PaisRemote.Find(nombrePais);
		if(objPais!=null){
			objPais = new Pais();
			objPais.setNombrePais(nombrePais);
			objPais.setNacionalidad(nacionalidad);
			PaisRemote.Update(objPais);
			AddInfo(e, "Update"); 
		}else{
			AddError(e, "No Update"); 
		}
		Init();
		return "v";
	}
	public String Delete (ActionEvent e){
		Pais objPais = new Pais();
		objPais = PaisRemote.Find(nombrePais);
		if(objPais!=null){
			PaisRemote.Delete(objPais.getNombrePais());
			AddInfo(e,"Delete"); 
		}else{
			AddError(e,"No Delete"); 
		}
		Init();
		return "savePais.xhtml";
	}
	public String Find (ActionEvent e){	
		Pais objPais = new Pais();		
		objPais=  PaisRemote.Find(nombrePais);
		if(objPais!= null){
			setNombrePais(objPais.getNombrePais());
			setNacionalidad(objPais.getNacionalidad());
			AddInfo(e,"Find");  
		}else{	
			AddError(e,"No Find"); 
			//setName(" ");
		}		
		return "savePais.xhtml";
	}
	//--------------------------------------------	
	private void Init(){
		setNombrePais("");
		setNacionalidad("");		
	}
	//---------------------------------------------
	public void AddInfo(ActionEvent actionEvent , String msg) {  
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, msg,""));  
    }  
  
    public void AddWarn(ActionEvent actionEvent) {  
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Sample warn message", "Watch out for PrimeFaces!"));  
    }  
  
    public void AddError(ActionEvent actionEvent, String msg) {  
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,msg ,""));  
    }  
  
    public void AddFatal(ActionEvent actionEvent) {  
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Sample fatal message", "Fatal Error in System"));  
    } 
}
